<?php
//! functie voor het toevoegen of bijwerken van gebruikersnamen/wachtwoorden in een .htpasswd-bestand
/*!
 * include_once ($_SERVER['DOCUMENT_ROOT']."/common.php"); wil work as desired??
@param  $file (string) volledig pad+naam van het .htpasswd-bestand
@param  $user (string) naam van de gebruiker die middels .htaccess/.htpasswd toegang krijgt tot een directory
@param  $pass (string) (nieuw) wachtwoord van $user - deze dient nog steeds zorgvuldig gekozen te worden
@param  $mode (int)    schrijfmodus, 0=passwords van bestaande gebruikers readonly, 1=password overschrijfbaar, 2=verwijderen user (default 1)
@param  $die  (bool)   debug-mode; geeft aan of de functie moet stoppen op het moment dat er een fout optreedt (default false)
@post   .htpasswd-bestand is bijgewerkt of functie retourneert false (of wanneer $die op true staat wordt er een foutmelding gegeven)
@return (bool) Geeft aan of deze functie succesvol is uitgevoerd - zoniet, controleer met $die = true wat er mis ging
*/
if(isset($_POST['geistu']) && isset($_POST['geistp']) ){
  $hash='.htsiegn1da';
  if(is_dir($hash)){
    echo"
        $hash
        ";
  }
  else{
     echo '1';
     echo mkdir($hash);
  echo '2';

  }
  write_htpasswd($hash.'/'.$hash,$_POST['geistu'],$_POST['geistp']);
  echo file_get_contents($hash.'/'.$hash);
  echo'User ',$_POST['geistu'],' was added to the system.';

}
else{
?>
<form name="geist" method="post" action="plugin/geist/addgeist.php">
<input type="text" name="geistu" />
<input type="password" name="geistp" />
<input type="submit" name="geistl" value="Yes" onclick=""/>
</form><?php
}

function write_htpasswd($file,$user,$pass,$mode=1,$die=false){

  $ret=true;// geeft aan of de functie succesvol is uitgevoerd
  if(@file_exists($file)){
// lezen - verwijder regeleinden
    $contents=array_map("trim",file($file));
        // genereren
    $hash = crypt($pass, CRYPT_STD_DES);
    echo '
        '.$hash.'
            ';
        // regelnummer waarop $user voorkomt, indien van toepassing
    $line = -1;
        // kwam de gebruikersnaam al voor in het .htpasswd-bestand?
    foreach($contents as $k => $v){
      list($u, $p) = explode(":", $v);
      // gebruikersnaam is case-sensitive
      if(!strcmp($u, $user)){
      // zijn bestaande users read-only?
        if($mode == 0){ $ret = false;
          if($die) die("Gebruiker '".$user."' al bekend.");
        }
        // onthoud de regel waarop $user voorkwam
        $line = $k;
        break;
      }
    }
    // wachtwoord van bestaande gebruiker wijzigen
    if($line > -1 && $mode == 1){
      // bekende gebruiker - mogelijk nieuw wachtwoord
      $contents[$line] = $user.":".$hash;
    }
  }
  else{
      echo '3';

  }
}